/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.modelos.validadores;

import br.com.saber.certificacao.modelos.Contestacao;
import br.com.saber.certificacao.modelos.validadores.exceptions.ContestacaoException;
import br.com.saber.certificacao.modelos.validadores.exceptions.generica.ValidacaoExcecao;
import br.com.saber.certificacao.modelos.validadores.interfaces.ValidadorInterface;
import org.apache.commons.lang.StringUtils;

/**
 *
 * @author gbvbahia
 */
public class ContestacaoValidador implements ValidadorInterface<Contestacao, Object> {

    private void validar(Contestacao entidade, Object bean) throws ValidacaoExcecao {
        if (StringUtils.isBlank(entidade.getCertificacaoNome())) {
            lancarException(("contestacaoCertificacaoNomeNula"));
        }
        if (StringUtils.isBlank(entidade.getVersaoNome())) {
            lancarException(("contestacaoVersaoNula"));
        }
        if (StringUtils.isBlank(entidade.getContestacao())) {
            lancarException(("contestacaoContestacaoTextoNulo"));
        }
        if (entidade.getAlunoContestador() == null) {
            lancarException(("contestacaoAlunoNulo"));
        }
        if (entidade.getQuestao() == null) {
            lancarException(("contestacaoQuestaoNula"));
        }
        if (!StringUtils.isBlank(entidade.getRespostaProfessor()) && entidade.getRespostaProfessor().length() > 300) {
            lancarException(("contestacaoRespostaProfessorGrande"));
        }
        if (entidade.isRespondido() && StringUtils.isBlank(entidade.getRespostaProfessor())) {
            lancarException(("contestacaoRespostaSemString"));
        }
        if(entidade.isRespondido() && entidade.getDataResposta() == null){
            lancarException(("contestacaoRespostaSemData"));
        }
    }

    private void lancarException(String msg) {
        throw new ContestacaoException(msg);
    }

    @Override
    public void validar(Contestacao entidade, Object bean, Object object) throws ValidacaoExcecao {
        this.validar(entidade, bean);
    }

}
